import { resolve } from 'path';
import { defineConfig, loadEnv } from 'vite';
import vue from '@vitejs/plugin-vue';

// https://vitejs.dev/config/
export default ({ mode }) =>
  defineConfig({
    plugins: [vue()],
    resolve: {
      // 配置别名
      alias: {
        '@': resolve(__dirname, 'src')
      }
    },
    server: {
      port: 8990, // 设置服务启动端口号
      open: true, // 设置服务启动时是否自动打开浏览器
      proxy: {
        // 接口地址代理
        '/api': {
          target: loadEnv(mode, process.cwd()).VITE_BASE_URL, // 接口的域名
          secure: false, // 如果是https接口，需要配置这个参数
          changeOrigin: true, // 如果接口跨域，需要进行这个参数配置
          rewrite: (path) => path.replace(/^\/api/, '')
        }
      }
    },
    // 全局css变量
    css: {
      preprocessorOptions: {
        scss: {
          additionalData: `@import "@/styles/variable.scss";`
        }
      }
    },

    // 配置打包文件输出
    build: {
      outDir: 'cloud',
      // 压缩配置
      terserOptions: {
        compress: {
          drop_console: true,
          drop_debugger: true
        }
      },
      rollupOptions: {
        output: {
          entryFileNames: 'js/[name].[hash].js',
          chunkFileNames: 'js/[name].[hash].js',
          assetFileNames(assetInfo) {
            if (assetInfo.name.endsWith('.css')) {
              return 'css/[name].[hash].css';
            }
            if (
              ['.png', '.jpg', '.jpeg', '.svg'].some((ext) =>
                assetInfo.name.endsWith(ext)
              )
            ) {
              return 'imgs/[name].[hash].[ext]';
            }
            return 'assets/[name].[hash].[ext]';
          }
        }
      }
    }
  });
